package com.wuwei.elearning.interceptor;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wuwei.elearning.setting.domain.User;
import com.wuwei.elearning.setting.mapper.UserMapper;
import com.wuwei.elearning.utils.token.TokenCache;
import com.wuwei.elearning.utils.token.TokenUtil;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 当用户在别地地方登录后，根据工号存储在服务器的token和用户在请求头中携带的token就不一样了，此时如果两个token不一样，就跳转登录
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {

    @Resource
    private UserMapper userMapper;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //登录验证
        //登录成功(session 中有 user) -》放行
        // 不拦截 OPTIONS 请求

        if (request.getMethod().equals("OPTIONS")) {
            return true;
        }
        String token = request.getHeader("Authorization");
        TokenUtil.getAccountFromToken(token);
        return  true;
//
        /*
//        这里先获取请求头的token，再根据请求头的token获取empno。
//        这时如果有人在别处登录，此时之前登录的用户所拥有的token和此时该用户工号对应的真正的token就不一样了。
//        此时就拦截
//         */
//        String token = request.getHeader("Authorization");
//        Long account = TokenUtil.getAccountFromToken(token);
//        String token1 = TokenCache.getToken(account);
//        if (token1 != null && token1.equals(token)){
//            return true;
//        }
//        //登录失败-》跳转登录
//        response.sendRedirect(request.getContextPath()+"/");
//        return false;
    }
}
